In typical communication networks, physical or logical connections into the network have Service Level Agreements (SLAs) defining various parameters of communication service, usually in terms of communication bandwidth allocation. A customer having multiple network connections pays for each SLA and by doing so, is in effect paying for an aggregate amount of bandwidth. Due to the bursty nature of Internet Protocol (IP) and other types of communication traffic, however, there are often times during which some of a customer's connections exceed their respective allocated bandwidths, while others are operating below their allocations.
Communication networks normally use policing algorithms to enforce SLAs. Connections are individually policed and cannot share unused bandwidth with other policed connections. When a connection is in excess of its predetermined bandwidth, as in the above example, its communication traffic is negatively affected by either being discarded or marked for later discarding. Even though a customer is paying for an aggregate amount of bandwidth, any unused bandwidth on one connection cannot be used by any of its other connections.
Conventional “leaky bucket” policing algorithms are illustrative of per-connection policing, in which individual connections are policed for bandwidth usage. These methods operate on individual connections, and thus do not share unused bandwidth between connections.
Although sophisticated buffer management and scheduling algorithms may be used in an attempt to share excess bandwidth between connections, these techniques tend to be complex and costly, and operate on communication traffic which has already been processed by a policing function. In addition, these techniques share excess bandwidth between not only a customer's connections, but also connections of other customers as well. Customers therefore cannot be guaranteed that they will get their fair share of purchased but unused bandwidth.
Accordingly, there remains a need for policing techniques which enforce per-connection restrictions for a group of connections while allowing excess resource sharing within the group.